Linux Kernel 是我們最需要修改的地方拉,因為後續所有的程式或者各種功能都在 linux 底下運行,那在這邊的設備樹設定就非常的重要啦。
假如今天我們有 I2C 設備 、 SPI 設備 又或者我們需要 Ethernet 的功能 , 都必須要正確地設定才可以讓程式以及外部的設備在板子上正確運行。
devtool modify linux-stm32mp
bitbake linux-stm32mp -c menuconfig
在設備樹當中可以找到對應的設備樹,開頭會看到 #include 的文件,有些東西會定義到其中,原因是因為同型號的板子例如CPU,i2c 等等,可能比較基本或通用的就會定義到其中。所以假如找不到想要修改的部分可以去看看其他的 include 檔案。
/dts-v1/;
#include "stm32mp157f.dtsi"
#include "stm32mp157f-pinctrl.dtsi"
#include "stm32mp15x-pinctrl.dtsi"
memory@80000000 {
device_type = "memory";
reg = <0x0 0x80000000 0x0 0x80000000>;
};
linux,cma {
compatible = "shared-dma-pool";
reusable;
alloc-ranges = <0 0x80000000 0 0x80000000>;
size = <0x0 0x40000000>;
alignment = <0x0 0x2000>;
linux,cma-default;
};
/* gpio-keys {
compatible = "gpio-keys";
button-user-1 {
label = "User-1";
linux,code = <BTN_1>;
gpios = <&gpiof 4 GPIO_ACTIVE_HIGH>;
status = "okay";
};
button-user-2 {
label = "User-2";
linux,code = <BTN_2>;
gpios = <&gpiob 6 GPIO_ACTIVE_HIGH>;
status = "okay";
};
};*/
其餘的像是 i2c , spi , ethernet 等等設定,後續幾篇會說明驅動的時候再來一併說明。
git add . && git commit -m "test"
devtool finish linux-stm32mp /home/ubuntu/stm32mp/layers/meta-custom # 依照個人修改
bitbake linux-stm32mp
最後說明一下假如想要查看已經編譯好的 dtb 檔案 ,可以透過 dtc 來反編譯回來。
將 dts 編譯生成 dtb
./dtc -I dts -O dtb -o xxx.dtb xxx.dts
將 dtb 反編譯生成 dts
./dtc -I dtb -O dts -o xxx.dts xxx.dtb
後續就會開始說明驅動的部分拉,有關於各式的外圍設備該如何去編寫設備樹以及如何測試,都會放到後面幾篇文章來說明。